package com.itheima.leetcode.od.b.string;

import java.util.Arrays;

/**
 * (B卷,100分)- 座位调整（Java & JS & Python & C）
 * <p>
 * 题目描述
 * <p>
 * 疫情期间课堂的座位进行了特殊的调整，不能出现两个同学紧挨着，必须隔至少一个空位。
 * <p>
 * 给你一个整数数组 desk 表示当前座位的占座情况，由若干 0 和 1 组成，其中 0 表示没有占位，1 表示占位。
 * <p>
 * 在不改变原有座位秩序情况下，还能安排坐几个人？
 * <p>
 * 输入描述
 * <p>
 * 第一行是个子数组表示作为占座情况，由若干 0 和 1 组成，其中 0 表示没有占位，1 表示占位
 * <p>
 * 输出描述
 * <p>
 * 输出数值表示还能坐几个人
 * <p>
 * 备注
 * 1 ≤ desk.length ≤ 2 * 10^4
 * <p>
 * 用例
 * <p>
 * 输入	1,0,0,0,1
 * 输出	1
 * 说明	只有desk[2]的位置可以坐一个人
 */
public class SeatAdjustment {
    public static void main(String[] args) {
        /*Scanner sc = new Scanner(System.in);
        // 输入处理，假设输入格式为以逗号分隔的字符串
        String input = sc.nextLine();
        String[] deskArr = input.split(",");
        int[] desk = new int[deskArr.length];

        // 将输入的字符串数组转换为整数数组
        for (int i = 0; i < deskArr.length; i++) {
            desk[i] = Integer.parseInt(deskArr[i]);
        }*/

        String input = "1,0,0,0,1";
        int[] desk = Arrays.stream(input.split(","))
                .mapToInt(Integer::parseInt)
                .toArray();

        // 输出能坐的人数
        System.out.println(maxPeople(desk));
    }

    // 计算能安排的人数
    private static int maxPeople(int[] desk) {
        int n = desk.length;
        int count = 0;  // 用来记录能安排多少个座位
        int i = 0;  // 遍历数组的指针

        // 遍历座位数组
        while (i < n) {
            if (desk[i] == 0) {  // 如果当前座位是空的
                // 检查前后是否符合安排条件
                if ((i == 0 || desk[i - 1] == 0) && (i == n - 1 || desk[i + 1] == 0)) {
                    count++;  // 可以安排一个座位
                    i += 2;  // 跳过下一个座位
                } else {
                    i++;  // 继续检查下一个座位
                }
            } else {
                i++;  // 如果当前位置已经有座位，跳过
            }
        }
        return count;
    }
}